package atm;


import domain.Bcard;

public class ChangePwd extends Transaction{

	public static final int TRANS_UNSTART = 1; // 未开始
	public static final int TRANS_GETDATA = 2; // 获取交易请求
	public static final int TRANS_SUCCESS = 3; // 交易成功
	public static final int TRANS_FAILURE = 4; // 交易失败
	public static final int TRANS_EXIT = 4; // 退出
	Bcard cardDao = Bcard.bcard();
	int Password;
	
	public ChangePwd(Session session, Bcard bcard) {
		super(session,bcard);
		// 当选择取款交易时,需要改变显示屏的显示,需要改变数字键盘的状态
		ATM machine = ATM.getInstance();
		machine.getDisplay().setText("请输入新密码：");
		machine.getDigitButton().stateChange(1, 1, "ChangePwdServlet");
	}
	
	// 第一次输入密码，判断6位数
	public void changepwd(int pwd) {
		ATM machine = ATM.getInstance();
		if (pwd >= 100000  &&  pwd <=999999) {
		try {
			Password = pwd;
			this.setState(TRANS_SUCCESS);
			machine.getDisplay().setText("请再次输入新密码：");
			machine.getDigitButton().stateChange(1, 1, "ChangePwdTwoServlet");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}else {
			this.setState(TRANS_FAILURE);// 4  交易失败
			machine.getDisplay().setText("请输入六位密码，重新操作！"+"<br>"+"确定:1");
			machine.getDigitButton().stateChange(0, 0, "ChangePwdPrintServlet");
		}
	}
	
	// 第二次输入密码，判断是否相符合
	public void changepwdtwo(int pwd) {
		ATM machine = ATM.getInstance();
		if(pwd == Password) {
			try {
				cardDao.editPwd(pwd);
				this.setState(TRANS_SUCCESS);
				machine.getDisplay().setText("密码修改成功，将重新登录！"+"<br>"+"确定:0");
				machine.getDigitButton().stateChange(0, 0, "ChangePwdPrintServlet");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else {
			this.setState(TRANS_FAILURE);// 4  交易失败
			machine.getDisplay().setText("密码输入不一致，请重新操作！"+"<br>"+"确定:1");
			machine.getDigitButton().stateChange(0, 0, "ChangePwdPrintServlet");
		}
	}
	
	/**
	 * 
	     * @Title: changepwd
	     * @author Huang_shengjun
	     * @Description: 修改密码后退卡
	     * @param @param flag 参数
	     * @return void 返回类型
	     * @date 2020年5月29日 下午8:24:25
	     * @throws
	 */
	public void changepwdprint(int flag) {
		ATM machine = ATM.getInstance();
		if(flag != 1){
			machine.setState(ATM.IDLE);
			machine.getCardSlot().eject();
			machine.getSwitchButton().stateChange(ATM.IDLE);
			machine.getDisplay().setText("请插入你的银行卡");
			machine.getArea().setText("");
			machine.getDigitButton().stateChange(2, 0, "");
		}else {
			this.getSession().setState(Session.CHOOSING);
			machine.getDisplay().setText("请选择业务 1:取款 2:存款 3:查询余额 4:转账 5:代缴费 6:修改密码   0:退出 ");
			machine.getDigitButton().stateChange(0, 0, "TransactionServlet");
			
		}
	}
	
}
